home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / you-075a.lha / you-075a / system_t.h < prev    next >
C/C++ Source or Header  |  1992-06-18  |  4KB  |  115 lines

  1. /* ******************************************************************** */
  2. /* system.h          Copyright (C) Codemist and University of Bath 1989 */
  3. /*                                                                      */
  4. /* Environment specific code                                           */
  5. /* ******************************************************************** */
  6.  
  7. /*
  8.  
  9.  * System specific types...
  10.  *
  11.  * (see '.c' for details)
  12.  
  13.  */
  14.  
  15. #ifndef SYSTEM_T_H
  16.  
  17. #define SYSTEM_T_H
  18.  
  19. /*
  20.  
  21.  * Types and declarations...
  22.  
  23.  */
  24.  
  25. /* ******************************************************************** */
  26. /*                             System V                                 */
  27. /* ******************************************************************** */
  28.  
  29. #ifdef MACHINE_SYSTEMV
  30.  
  31. #include <sys/types.h>
  32. #include <sys/ipc.h>
  33. #include <sys/sem.h>
  34. #include <sys/shm.h>
  35.  
  36. extern char *shmat(int,char *,int);
  37.  
  38. typedef int SystemSemaphore;
  39.  
  40. #define SYSTEM_THREAD_SPECIFIC_DECLARATION(type,name) type name
  41. #define SYSTEM_THREAD_SPECIFIC_VALUE(name)            (name)
  42.  
  43. #define SYSTEM_GLOBAL(type,name)            volatile type* name
  44. #define SYSTEM_INITIALISE_GLOBAL(type,name,value) \
  45.           (name=(volatile type*)(system_static_malloc(sizeof(type))),*name=value)
  46. #define SYSTEM_GLOBAL_VALUE(name)           (*(name))
  47. #define SYSTEM_GLOBAL_ARRAY1(type,name,n) volatile type* name
  48. #define SYSTEM_INITIALISE_GLOBAL_ARRAY1(type,name,num,val) \
  49.           { \
  50.         int siga1; \
  51.         name=(volatile type*)(system_static_malloc(sizeof(type)*num)); \
  52.         for (siga1=0;siga1<num;++siga1) { \
  53.           *(name+siga1)=val; \
  54.         } \
  55.       }
  56. #define SYSTEM_GLOBAL_ARRAY1_VALUE(name,index) (*(name+index))
  57. #define ADD_SYSTEM_GLOBAL_ROOT(name) add_root(name)
  58.  
  59. #endif
  60.  
  61. /* ******************************************************************** */
  62. /*                             Any Machine                              */
  63. /* ******************************************************************** */
  64.  
  65. #ifdef MACHINE_ANY
  66.  
  67. typedef int SystemSemaphore;
  68.  
  69. #define SYSTEM_THREAD_SPECIFIC_DECLARATION(type,name) type name
  70. #define SYSTEM_THREAD_SPECIFIC_VALUE(name) (name)
  71.  
  72. #define SYSTEM_GLOBAL(type,name) type name
  73. #define SYSTEM_GLOBAL_VALUE(name) (name)
  74. #define SYSTEM_INITIALISE_GLOBAL(type,name,value) name=value
  75. #define SYSTEM_GLOBAL_ARRAY1(type,name,dim) type name[dim]
  76. #define SYSTEM_INITIALISE_GLOBAL_ARRAY1(type,name,num,val) \
  77.           { \
  78.         int siga1; \
  79.         for (siga1=0;siga1<num;++siga1) { \
  80.           *(name+siga1)=val; \
  81.         } \
  82.       }
  83. #define SYSTEM_GLOBAL_ARRAY1_VALUE(name,index) (name[index])
  84. #define ADD_SYSTEM_GLOBAL_ROOT(name) add_root(&name)
  85. #endif
  86.  
  87. /* ******************************************************************** */
  88. /*                               BSD                                    */
  89. /* ******************************************************************** */
  90.  
  91. #ifdef MACHINE_BSD
  92.  
  93. typedef int SystemSemaphore;
  94.  
  95. #define SYSTEM_THREAD_SPECIFIC_DECLARATION(type,name) type name
  96. #define SYSTEM_THREAD_SPECIFIC_VALUE(name)            (name)
  97.  
  98. #define SYSTEM_GLOBAL(type,name)            type name
  99. #define SYSTEM_INITIALISE_GLOBAL(type,name,value) (name=value)
  100. #define SYSTEM_GLOBAL_VALUE(name)           (name)
  101. #define SYSTEM_GLOBAL_ARRAY1(type,name,n) type name[n]
  102. #define SYSTEM_INITIALISE_GLOBAL_ARRAY1(type,name,num,val) \
  103.           { \
  104.         int siga1; \
  105.         for (siga1=0;siga1<num;++siga1) { \
  106.           *(name+siga1)=val; \
  107.         } \
  108.       }
  109. #define SYSTEM_GLOBAL_ARRAY1_VALUE(name,index) (name[index])
  110. #define ADD_SYSTEM_GLOBAL_ROOT(name) add_root(&name)
  111. #endif
  112.  
  113. #endif /* SYSTEM_T_H */
  114.  
  115.